<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // forEach方法：arr.forEach((item,index,array) => {},thisArgs)
        //forEach方法不会改变原数组，该方法没有返回值
        //forEach遍历的数组如果时引用数据类型，在对引用对象里的数据进行修改时会同步修改原数组的引用数据 forEach不是表达式
        //使用场景：遍历一个数组，对数组的每一项做一些处理，不需要变量接收



        // map方法arr.map((item,index,array) => {retuan 返回值},thisArgs)
        // map方法不会改变原数组，该方法有返回值，返回值时每个回调函数的返回值组成的数组
        // map在实际项目中，可以把map方法当成forEach使用  map是表达式
        // 使用场景：遍历每一个数组，对数组里的每一项做一些处理，返回一个新的数组


        //filter方法：arr.filter((item,index,array) => {retuan 布尔值},thisArgs)
        //filter方法就是一个循环过滤的方法，参数是一个回调函数，回调函数里一定会返回一个布尔值，
        // 如果返回turn就保留当前的元素，如果返回false就去掉当前循环的元素
        // 使用场景：删除操作


        // every方法是一个循环数组的方法，该方法由一个参数就是回调函数，还回调函数一定要返回布尔值，
        // every方法返回也是一个布尔值，这个布尔值取决于每一个回调函数内部返回的值，如果每一个回调函数
        //都是true，那么every方法就返回true，只要有一个回调函数返回flase，那么every方法就返回flase
        // 简单理解，就是every方法回调里都是true最终才是true，只要有一个为flase最终就是false

        //使用场景：对一个数组进行判断，如果数组里每一个都满足条件就返回true，否则返回false



        //some方法是一个循环数组的方法，该方法有一个参数是一个回调函数，该回调函数
        //一定要返回布尔值，some方法返回也是一个布尔值，这个布尔值是取决于每一个
        //回调函数内部返回的值，如果有一个回调函数返回的true，那么some方法就是true，否则为false

        // 使用场景：对一个数组进行循环判断，只要数组里有一个满足条件就返回true，否则就返回false


        //reduce方法是一个数组的迭代方法，该方法是对一个数组里的每一个元素进行迭代，
        // 并把当前循环的结果作为下一次迭代的初始值
        // reduce方法是数组里最强大的一个方法，它可以实现数组其他任何方法。
        //arr.reduce((上一次迭代的返回值，当前迭代项，当前迭代的索引，原数组) => {},第一次迭代的值) 

        // var  arr = [1,2,3,4,5]
        // var res = 0
        // var res1 = arr.reduce((res,item,index,array) => 
        //     res += item
           
        // ,0)
        // console.log(res1);

        var str = 'sdadwadkfafdjjjjjjj'
        Object.values(str)
        console.log(str); 
    </script>
</body>
</html>